Scheduling methods are commonly used in a data processing system for controlling the execution of different work units (for example, jobs in a batch processing). For this purpose, several types of schedulers have been proposed in the last years to automate the process of submitting the execution of large quantities of jobs. The schedulers submit the jobs according to a predefined plan. The plan establishes a flow of execution of the jobs according to several factors; typically, the factors affecting the flow of execution include temporal constraints (such as date, time, day of the week) and dependencies (such as completion of preceding jobs). An example of scheduler is the “Tivoli Workload Scheduler” by IBM Corporation.
Each job typically requires several hardware and/or software resources for its execution (such as computers, operating systems, applications, databases, storage devices, and the like). The resources that must be used by the job can be specified statically (i.e., identifying the actual physical or logical entities). However, most of the available schedulers allow defining the required resources through their properties; for example, it is possible to specify that the job must be executed on a computer having a desired operating system, number of processors, installed memory, and so on. In this way, the actual physical or logical entities to be used by the job can be selected dynamically at run-time.
Nevertheless, the solutions known in the art are ineffective in dealing with complex environments composed of many types of resources (such as networks, clusters, organizations, and the like). Particularly, the available schedulers lack any support for managing physical or logical relationships among the resources to be used by the jobs; a typical example is that of a system with a multitude of computers that are connected to each other, manage applications running on other computers, access remote databases, and the like.
The above-mentioned drawbacks seriously hinder the use of the schedulers in many practical situations; particularly, this makes it very difficult to control the submission of jobs in distributed environments (for example, based on the Internet).